The statements in this section merely provide background information related to the present disclosure and may not constitute prior art.
When an application is installed in a computing environment a number of resource files, including configuration files, library files, etc., are created by the installation process at various locations in the computing environment to support the application. The installation process also makes changes to the computing environment, such as by creating or modifying registry keys, in order to support operation of the application.
A problem that arises is how to manage the transition from a current (i.e. legacy) source computing environment to a new updated target computing environment. One way to transition from a legacy environment to a target computing environment is to re-install the applications that were executing in the source computing environment directly in the target computing environment. Data files may typically be maintained in a data store accessible to either computing environment, or migrated over by copying the data files from the source computing environment to the target computing environment.
In some cases, such as in virtualized environments, a machine image of the source computing environment may be maintained as an image. An issue with this approach is that the source computing environment is preserved as-is, and is not maintained current with newly issued functional and security updates. This can lead to bugs, vulnerabilities, and interoperability issues with newer computing environments and applications since the image is of the “old” operating system and related computing environment.
There are a number of additional difficulties with these approaches, some of which are described in more detail below.
A first difficulty is that applications and operating systems are often patched over time. These patches can affect resource files, location and content, as well as the computing environment, registry key changes, etc. An application that is re-installed in a target computing environment will need to be re-patched in order to function properly. This process can be time consuming and in some cases difficult to replicate.
A second difficulty is that applications may be customized or modified for operation in the legacy environment. In some cases the application installer may be designed for the source computing environment. In these cases it may not be possible to re-install the application in the target computing environment without modifying or re-writing the installer and/or the application itself.
Modification of the original installer and source code may introduce new errors, would require re-testing of the product and consume significant resources. Accordingly, in some situations it is desirable to migrate applications without making changes to the original source code.
A third difficulty is that legacy applications may no longer be supported by application providers, and accordingly there may be no porting software or installer available for the legacy application to be installed or ported to the target computing environment. Application providers may only provide new versions of software for the target computing environment.
A fourth difficulty is that copying executables and resource files from one computing environment to another computing environment works inconsistently at best, and for some applications never works properly.
These difficulties often lead IT advisors to recommend staying with a source computing environment as long as possible, even though support and security for the source computing environment may be inferior to the target computing environment.
In some cases government regulatory bodies may certify specific applications, and specific application versions, for use. In these situations it can be very costly and time consuming to move from a legacy application to a newer version or replacement which is not currently certified for use.
Another issue that arises when trying to migrate applications is that in many cases the source computing environment is a mission critical asset of the system owner. In these situations the system owner may refuse to allow any experimentation or testing on the source computing environment that will affect the execution of the applications or the operating system. If this is the case then the application migration can only rely on passive observations of the source computing environment, and all testing or experimentation must take place in the target computing environment which remains offline until the migration is complete.
One particular issue that has arisen related to Microsoft Windows is the hardware transition from 32 bit to 64 bit processors. This switch has affected all legacy applications that were written for a 32 bit environment. Inherently a 64 bit OS will support the execution of a 32 bit application, however, the internal architecture of the OS differs subtly due to changes in the bit architectures. These differences are typically accounted for during initial installation of the application as the installer is operative to modify the application installation for the current operating system environment. Migrating from a 32 bit source computing environment to a 64 bit target computing environment presents additional challenges.
During original installation an application is configured by the installer to match the target computing environment: OS version, file locations, patches, drivers, etc. During the migration process the application components have to be reconfigured from the source computing environment to the target computing environment. For instance the application components may need to be reconfigured from a 32 bit source computing environment to a 64 bit target computing environment, or from an older 64 bit source computing environment to a newer 64 bit target computing environment.
In some cases the locations of files are different in the target computing environment from expected locations of files in the source computing environment. In these cases migration requires not only copying over files from the source computing environment, but relocating the copied files to the corresponding “new” location in the target computing environment.
Application migration arises both with conventional desktops and laptops, as well as for virtualized environments. In general, there is a need for an application migration tool and/or method that simplifies the process of migrating applications from one computing environment to another.
Accordingly, there is a need for methods and systems to assist in migrating applications from a source computing environment to a target computing environment, e.g. from one operating system (OS) version to another, along with all the data and configuration information available to the application in the source computing environment.